//
//  TPButton.h
//  Pods
//
//  Created by caixun on 15/11/3.
//
//

#import <UIKit/UIKit.h>


/*!
 *  @author caixun, 15-11-03 11:11:04
 *
 *  @brief  自定义button，也是全站button的父类
 *
 *  @since v1.0
 */
@interface TPButton : UIButton


// 扩展属性，携带字典参数
@property (nonatomic, strong) NSMutableDictionary *mdicParam;
// 是否加载到背景图片上(默认为NO，此属性要在调用下载图片方法前设置) NO 设置成普通图片 YES 设置成背景图片
@property (nonatomic, assign) BOOL isSetBgImg;


#pragma mark - ********************************** 初始化方法 工厂方法 *********************************

/*!
 *  @author caixun, 15-11-03 11:11:54
 *
 *  @brief  初始化基本设置
 *
 *  @param frame btn的frame
 *
 *  @return 返回btn实例
 *
 *  @since v1.0
 */
+ (instancetype)getWithFrame:(CGRect)frame;
+ (instancetype)getWithFrame:(CGRect)frame target:(id)target action:(SEL)action;


#pragma mark - ********************************** 初始化方法 实例方法 *********************************

/*!
 *  @author caixun, 15-11-03 11:11:38
 *
 *  @brief  初始化基本设置
 *
 *  @param frame  btn的frame
 *  @param target btn响应事件的对象
 *  @param action 响应事件
 *
 *  @return 返回btn对象
 *
 *  @since v1.0
 */
- (instancetype)initWithFrame:(CGRect)frame target:(id)target action:(SEL)action;


#pragma mark - *********************************** 设置属性 实例方法 **********************************

/*!
 *  @author caixun, 15-11-03 11:11:20
 *
 *  @brief  设置target和action
 *
 *  @param target
 *  @param action
 *
 *  @since v1.0
 */
- (void)setTarget:(id)target action:(SEL)action;

/*!
 *  @author caixun, 15-11-03 11:11:33
 *
 *  @brief  设置Image
 *
 *  @param imgNor
 *
 *  @since v1.0
 */
- (void)setNorImg:(UIImage *)imgNor;

/*!
 *  @author caixun, 15-11-03 11:11:43
 *
 *  @brief  设置BgImage
 *
 *  @param imgBgNor
 *
 *  @since v1.0
 */
- (void)setNorBgImg:(UIImage *)imgBgNor;

/*!
 *  @author caixun, 15-11-03 11:11:53
 *
 *  @brief  同时设置BgImage和Title
 *
 *  @param imgBgNor      默认状态下btn的图片
 *  @param strNorTitle   默认状态下btn的文字
 *  @param colorNorTitle 默认状态下btn的颜色
 *  @param fontTitle     默认状态下btn的字体
 *
 *  @since v1.0
 */
- (void)setNorBgImg:(UIImage *)imgBgNor
           norTitle:(NSString *)strNorTitle
      norTitleColor:(UIColor *)colorNorTitle
          titleFont:(UIFont *)fontTitle;

/*!
 *  @author caixun, 15-11-03 11:11:57
 *
 *  @brief  设置圆角，边框
 *
 *  @param fltCornerRadius 设置btn的圆角
 *  @param fltBorderWidth  设置btn的边框的宽度
 *  @param colorBorder     设置btn边框的颜色
 *
 *  @since v1.0
 */
- (void)setCornerRadius:(CGFloat)fltCornerRadius
            borderWidth:(CGFloat)fltBorderWidth
            borderColor:(UIColor *)colorBorder;


#pragma mark - ************************************ 动态加载图片URL **********************************

/*!
 *  @author caixun, 15-11-03 11:11:52
 *
 *  @brief  设置是否显示占位图片,默认为YES
 *
 *  @param isShowPlaceholderImg 是否显示缺省图
 *
 *  @since v1.0
 */
- (void)setIsShowPlaceholderImg:(BOOL)isShowPlaceholderImg;

/*!
 *  @author caixun, 15-11-03 11:11:14
 *
 *  @brief  设置默认图片
 *
 *  @param imgPlaceholder 设置btn的缺省图片
 *
 *  @since v1.0
 */
- (void)setPlaceholderImage:(UIImage *)imgPlaceholder;


#pragma mark - 下载图片，delegate形式

/*!
 *  @author caixun, 15-11-03 11:11:40
 *
 *  @brief  设置网络图片Url
 *
 *  @param strImgUrl 设置btn的图片加载url
 *
 *  @since v1.0
 */
- (void)setImageURL:(NSString *)strImgUrl;


#pragma mark - 下载图片，Block形式

/*!
 *  @author caixun, 15-11-03 11:11:04
 *
 *  @brief  加载网络图片，设置成功和失败Block回调
 *
 *  @param strImgUrl 设置btn图片的url
 *  @param success   图片下载成功回调
 *  @param failure   图片下载失败回调
 *
 *  @since v1.0
 */
- (void)setImageURL:(NSString *)strImgUrl
            success:(void (^)(UIImage *image))success
            failure:(void (^)(NSError *error))failure;


@end
